package com.water.camera.kt

import androidx.fragment.app.FragmentActivity
import com.snap.base.ktx.adReward
import com.snap.base.ktx.isEnableConfigWithKey
import com.snap.base.util.BaseUtil
import com.snap.base.vm.GoodCommentVM
import com.snap.common.config.AppConfig
import com.snap.dialog.bindDialog
import com.snap.util.spGetInt
import com.snap.util.spPutBoolean
import com.snap.util.spPutInt
import com.snap.util.toast
import com.water.camera.R
import com.water.camera.databinding.DialogBuyBinding

open class BuyDialog {

    fun showDialog(context: FragmentActivity, action: () -> Unit) {
        // 判断后端是否配置了 好评永久免费使用
        if (BaseUtil.isEnableConfigWithKey(AdConfig.GOOD_DIALOG)) {
            val goodUtil = GoodCommentVM("五星好评永久无广告免费使用") {
                toast("领取成功")
                spPutBoolean(SpConstant.IS_GOOD, true)
                AppConfig.ad.close = true
            }
            goodUtil.actionAct = { context }
            context.lifecycle.addObserver(goodUtil)
            return
        }
        // 后端没有配置好评永久免费 那么 判断是否已经给好评了，如果没有给好评，弹窗显示 好评免费使用次数+1
        val goodSize = spGetInt(SpConstant.GOOD, 0)
        if (goodSize == 0) {
            val goodUtil = GoodCommentVM("五星好评,免费使用哦") {
                spPutInt(SpConstant.GOOD, 1)
                FreeSizeUtil.addFreeSize(3)
                toast("领取成功")
            }
            goodUtil.actionAct = { context }
            context.lifecycle.addObserver(goodUtil)
            return
        }
        // 如果后端没有配置好评永久免费，且 已经给了好评 那么 显示看激励视频广告免费使用弹窗
        bindDialog<DialogBuyBinding> {
            setLayout(R.layout.dialog_buy)
            setAction { binding, dialog ->
                binding.llAd.setOnClickListener {
                    dialog?.dismiss()
                    BaseUtil.adReward(context) {
                        FreeSizeUtil.addFreeSize(1)
                        toast("领取成功")
                    }
                }
                binding.tvBuy.setOnClickListener {
                    dialog?.dismiss()
                    action()
                }
            }
        }.show(context)
    }
}
